package com.trf.member.controller;


import com.baomidou.mybatisplus.extension.api.R;
import com.trf.member.base.Result;
import com.trf.member.entity.Supplier;
import com.trf.member.req.SupplierREQ;
import com.trf.member.service.ISupplierService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  供应商信息表 前端控制器
 * </p>
 *
 * @author 小小唐
 * @since 2023-03-04
 */
@RestController
@RequestMapping("/supplier")
public class SupplierController {

     //日志记录
     Logger logger = LoggerFactory.getLogger(getClass());

     //注入供应商数据信息
     @Autowired
     private ISupplierService supplierService;

    /**
     * 分页条件查询供应商列表
     * @param page 页码
     * @param size 每页显示记录数
     * @param req 查询条件
     * @return
     */
     @PostMapping("/list/search/{page}/{size}")
     public Result search(@PathVariable("page") Long page,
                          @PathVariable("size") Long size,
                          @RequestBody(required = false) SupplierREQ req){
         logger.info("分页查询供应商列表：page={},size={}",page,size);
         return supplierService.search(page, size, req);
     }


    /**
     * 新增供应商
     *
     * 按照供应商实体类填写会员的信息
     * 然后新增成功
     * @param supplier 供应商详情
     * @return
     */
     @PostMapping
     public Result add(@RequestBody Supplier supplier){
         boolean b = supplierService.save(supplier);
         if (b){
             return Result.ok();
         }
         return Result.error("新增供应商失败");
     }


    /**
     * 删除供应商 先判断是否被商品引用
     * 被引用则不允许被删除
     * @param id 供应商id
     * @return
     */
     @DeleteMapping("/{id}")
     public Result delete(@PathVariable("id")int id){
         return supplierService.deleteById(id);
     }

    /**
     * 通过供应商id查询详情
     * @param id 供应商id
     * @return
     */
     @GetMapping("/{id}")
     public Result get(@PathVariable("id") int id){
         Supplier supplier = supplierService.getById(id);
         return Result.ok(supplier);
     }

    /**
     * 修改供应商信息
     * 先通过供应商id查询供应商详情回显
     * 然后将修改后得数据提交更新
     * @param id 供应商id
     * @param supplier 供应商详情
     * @return
     */
     @PutMapping("/{id}")
     public Result update(@PathVariable("id") int id,
                          @RequestBody Supplier supplier){
         return supplierService.update(id,supplier);
     }
}
